package crypto

import (
	"blueprint-crypto/internal/util"
	"fmt"
	"os"
	"path/filepath"
	"strings"
)

// 批量AES加密
func BatchAES_Decrypt(rootPath string, pwdFile string, pempath string, keyword string, newKeyword string) {
	if !util.PathExists(rootPath) {
		panic(rootPath + "路径不存在，请检查")
	}
	if !util.PathExists(pwdFile) {
		panic(pwdFile + "文件不存在，请检查")
	}
	if !util.PathExists(pempath) {
		panic(pempath + "文件不存在，请检查")
	}
	plainFiles := util.Getfilepath(rootPath, keyword)
	for _, secretFile := range plainFiles {
		if util.IsFile(secretFile) {
			paths, fileName := filepath.Split(secretFile)
			if strings.Contains(fileName, keyword) {
				newFilename := strings.ReplaceAll(fileName, keyword, newKeyword)
				fmt.Println("源文件：", secretFile, " 解密后文件：", paths+newFilename)
				pwdKeyRSA := util.Readfile(pwdFile)
				pwdKey := util.RSA_Decrypt_txt(pwdKeyRSA, pempath)
				//打开要加密文件
				data := util.Readfile(secretFile)
				str, _ := util.DecryptByAes(string(data), pwdKey)
				plainfile, _ := os.Create(paths + newFilename)
				defer plainfile.Close()
				plainfile.Write([]byte(str))
				fmt.Println(secretFile, "解密完成--", "解密后文件为：", paths+newFilename)
			}
			//解密完成后删除原文件
			err := os.RemoveAll(secretFile)
			if err != nil {
				fmt.Errorf("源文件删除失败")
			}
			fmt.Println("源文件：", secretFile, "已经移除")

		}
	}
}
